15. [Optional] Quiz: Iterators and Generators

Quiz: Implement my_enumerate

Write your own generator function that works like the built-in function enumerate .

Calling the function like this:

lessons = ["Why Python Programming", "Data Types and Operators", "Control Flow", "Functions", "Scripting"]

for i, lesson in my_enumerate(lessons, 1):
    print("Lesson {}: {}".format(i, lesson))

should output:

Lesson 1: Why Python Programming
Lesson 2: Data Types and Operators
Lesson 3: Control Flow
Lesson 4: Functions
Lesson 5: Scripting

Start Quiz:

lessons = ["Why Python Programming", "Data Types and Operators", "Control Flow", "Functions", "Scripting"]

def my_enumerate(iterable, start=0):
    # Implement your generator function here


for i, lesson in my_enumerate(lessons, 1):
    print("Lesson {}: {}".format(i, lesson))

Quiz: Chunker

If you have an iterable that is too large to fit in memory in full (e.g., when dealing with large files), being able to take and use chunks of it at a time can be very valuable.

Implement a generator function, chunker , that takes in an iterable and yields a chunk of a specified size at a time.

Calling the function like this:

for chunk in chunker(range(25), 4):
    print(list(chunk))

should output:

[0, 1, 2, 3]
[4, 5, 6, 7]
[8, 9, 10, 11]
[12, 13, 14, 15]
[16, 17, 18, 19]
[20, 21, 22, 23]
[24]

Start Quiz:

def chunker(iterable, size):
    # Implement function here


for chunk in chunker(range(25), 4):
    print(list(chunk))